From 3f12fc2bd87209b366e806c01859279830b350de Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Tue, 9 Nov 2010 21:24:41 +0100 Subject: [PATCH] GtkStyleContext: Add gtk_style_context_set_background(). This function replaces gtk_style_set_background(). --- docs/reference/gtk/gtk3-sections.txt | 1 + gtk/gtkstylecontext.c | 42 ++++++++++++++++++++++++++++ gtk/gtkstylecontext.h | 3 ++ 3 files changed, 46 insertions(+) diff --git a/docs/reference/gtk/gtk3-sections.txt b/docs/reference/gtk/gtk3-sections.txt index e99c91d8fd..6aad760848 100644 --- a/docs/reference/gtk/gtk3-sections.txt +++ b/docs/reference/gtk/gtk3-sections.txt @@ -5419,6 +5419,7 @@ gtk_style_context_push_animatable_region gtk_style_context_remove_provider gtk_style_context_remove_provider_for_screen gtk_style_context_reset_widgets +gtk_style_context_set_background gtk_style_context_restore gtk_style_context_save gtk_style_context_set_direction diff --git a/gtk/gtkstylecontext.c b/gtk/gtkstylecontext.c index cadd28e684..7554322848 100644 --- a/gtk/gtkstylecontext.c +++ b/gtk/gtkstylecontext.c @@ -2743,6 +2743,48 @@ gtk_style_context_invalidate (GtkStyleContext *context) priv->invalidating_context = FALSE; } +/** + * gtk_style_context_set_background: + * @context: a #GtkStyleContext + * @window: a #GdkWindow + * + * Sets the background of @window to the background pattern or + * color specified in @context for its current state. + * + * Since: 3.0 + **/ +void +gtk_style_context_set_background (GtkStyleContext *context, + GdkWindow *window) +{ + GtkStateFlags state; + cairo_pattern_t *pattern; + GdkRGBA *color; + + g_return_if_fail (GTK_IS_STYLE_CONTEXT (context)); + g_return_if_fail (GDK_IS_WINDOW (window)); + + state = gtk_style_context_get_state (context); + gtk_style_context_get (context, state, + "background-image", &pattern, + NULL); + if (pattern) + { + gdk_window_set_background_pattern (window, pattern); + cairo_pattern_destroy (pattern); + return; + } + + gtk_style_context_get (context, state, + "background-color", &color, + NULL); + if (color) + { + gdk_window_set_background_rgba (window, color); + gdk_rgba_free (color); + } +} + /* Paint methods */ /** diff --git a/gtk/gtkstylecontext.h b/gtk/gtkstylecontext.h index 7b335da2cc..cc83bad00b 100644 --- a/gtk/gtkstylecontext.h +++ b/gtk/gtkstylecontext.h @@ -362,6 +362,9 @@ void gtk_style_context_state_transition_stop (GtkStyleContext *context, void gtk_style_context_invalidate (GtkStyleContext *context); void gtk_style_context_reset_widgets (GdkScreen *screen); +void gtk_style_context_set_background (GtkStyleContext *context, + GdkWindow *window); + /* Paint methods */ void gtk_render_check (GtkStyleContext *context, cairo_t *cr, -- 2.30.2